package com.ruoyi.system.service.impl;

import com.ruoyi.system.domain.FltBsApiLog;
import com.ruoyi.system.mapper.FltBsApiLogMapper;
import com.ruoyi.system.service.IFltBsApiLogService;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class FltBsApiLogServiceImpl implements IFltBsApiLogService {
    @Autowired
    private FltBsApiLogMapper fltBsApiLogMapper;
    @Resource
    private SqlSessionFactory sqlSessionFactory;

    @Override
    public void delete(Long id) {
        fltBsApiLogMapper.delete(id);
    }

    @Override
    public void insert(FltBsApiLog record) {
        fltBsApiLogMapper.insert(record);
    }

    @Override
    public void insertBeach(List<FltBsApiLog> recordList) {
        // ExecutorType.SIMPLE: 这个执行器类型不做特殊的事情。它为每个语句的执行创建一个新的预处理语句。
        // ExecutorType.REUSE: 这个执行器类型会复用预处理语句。
        // ExecutorType.BATCH: 这个执行器会批量执行所有更新语句,如果 SELECT 在它们中间执行还会标定它们是 必须的,来保证一个简单并易于理解的行为。

        // 关闭session的自动提交
        SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
        try {
            for (FltBsApiLog fltBsApiLog : recordList) {
                fltBsApiLogMapper.insert(fltBsApiLog);
            }
            // 提交数据
            sqlSession.commit();
            sqlSession.rollback();
        } catch (Exception e) {
            sqlSession.rollback();
        } finally {
            sqlSession.close();
        }
    }

    @Override
    public void update(FltBsApiLog record) {
        fltBsApiLogMapper.update(record);
    }

    @Override
    public FltBsApiLog selectById(Long id) {
        return fltBsApiLogMapper.selectById(id);
    }

    @Override
    public List<FltBsApiLog> selectList(FltBsApiLog fltBsApiLog) {
        return fltBsApiLogMapper.selectList(fltBsApiLog);
    }
}
